.\" -*- nroff -*-
.\" Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md
.\"
.TH UMAD_SEND 3  "May 11, 2007" "OpenIB" "OpenIB Programmer's Manual"
.SH "NAME"
umad_send \- send umad
.SH "SYNOPSIS"
.nf
.B #include <infiniband/umad.h>
.sp
.BI "int umad_send(int " "portid" ", int " "agentid" ", void " "*umad" ", int " "length" ", int " "timeout_ms" ", int " "retries");
.fi
.SH "DESCRIPTION"
.B umad_send()
sends
.I length\fR
bytes from the specified
.I umad\fR
buffer from the port specified by
.I portid\fR,
and using the agent specified by
.I agentid\fR.

The buffer can contain a RMPP transmission which is larger than a single MAD
packet when the agentid specifies a class which utilizes RMPP and the header
flags indicate RMPP is active.  NOTE currently only RMPPFlags.Active is
meaningful in the header in user space.  All other RMPP fields are ignored.
The data section of the buffer will be sent in multiple RMPP MAD packets with
headers built for the user.

.I timeout_ms\fR
controls the solicited MADs behavior as follows:
zero value means not solicited. Positive value makes kernel indicate timeout
in milliseconds. If reply is not received within the specified value, the
original buffer is returned in the read channel with the status field set (to
non zero). Negative
.I timeout_ms\fR
makes kernel wait forever for the reply.
.I retries\fR
indicates the number of times the MAD will be retried before giving up.
.SH "RETURN VALUE"
.B umad_send()
returns 0 on success; on error, errno is set and a negative value is returned
as follows:
 -EINVAL invalid port handle or agentid
 -EIO    send operation failed
.SH "AUTHOR"
.TP
Hal Rosenstock <halr@voltaire.com>
